
                    <svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
                        <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path>
                    </svg>
                    <p><img src="https://i-blog.csdnimg.cn/direct/66b954bbaf7c4afda5b59172e18c6457.png" alt="在这里插入图片描述"><br> <strong>学完时间：2024年8月13日</strong></p> 
<blockquote> 
 <p>我的纸飞机呀！飞呀飞！飞到了代码中！！！</p> 
</blockquote> 
<h2><a name="t0"></a><a id="_3"></a>一、前言叨叨</h2> 
<p>  今天是<a href="https://so.csdn.net/so/search?q=HarmonyOS&amp;spm=1001.2101.3001.7020" target="_blank" class="hl hl-1" data-report-view="{&quot;spm&quot;:&quot;1001.2101.3001.7020&quot;,&quot;dest&quot;:&quot;https://so.csdn.net/so/search?q=HarmonyOS&amp;spm=1001.2101.3001.7020&quot;,&quot;extra&quot;:&quot;{\&quot;searchword\&quot;:\&quot;HarmonyOS\&quot;}&quot;}" data-report-click="{&quot;spm&quot;:&quot;1001.2101.3001.7020&quot;,&quot;dest&quot;:&quot;https://so.csdn.net/so/search?q=HarmonyOS&amp;spm=1001.2101.3001.7020&quot;,&quot;extra&quot;:&quot;{\&quot;searchword\&quot;:\&quot;HarmonyOS\&quot;}&quot;}" data-tit="HarmonyOS" data-pretit="harmonyos">HarmonyOS</a>学习教学课第一课的第五课内容了，课后练习的人数已经降到了<strong>4150</strong>人了，预测下到 ”<strong>HarmonyOS 应用开发者基础认证</strong>“ 通过后，人数会不会还有2000人呢。</p> 
<h2><a name="t1"></a><a id="ArkUI_5"></a>二、ArkUI介绍</h2> 
<h3><a name="t2"></a><a id="1__6"></a>1. 基础概念</h3> 
<ul><li> <p><strong>UI：</strong><br> 即用户界面。开发者可以将应用的<a href="https://so.csdn.net/so/search?q=%E7%94%A8%E6%88%B7%E7%95%8C%E9%9D%A2%E8%AE%BE%E8%AE%A1&amp;spm=1001.2101.3001.7020" target="_blank" class="hl hl-1" data-report-view="{&quot;spm&quot;:&quot;1001.2101.3001.7020&quot;,&quot;dest&quot;:&quot;https://so.csdn.net/so/search?q=%E7%94%A8%E6%88%B7%E7%95%8C%E9%9D%A2%E8%AE%BE%E8%AE%A1&amp;spm=1001.2101.3001.7020&quot;,&quot;extra&quot;:&quot;{\&quot;searchword\&quot;:\&quot;用户界面设计\&quot;}&quot;}" data-report-click="{&quot;spm&quot;:&quot;1001.2101.3001.7020&quot;,&quot;dest&quot;:&quot;https://so.csdn.net/so/search?q=%E7%94%A8%E6%88%B7%E7%95%8C%E9%9D%A2%E8%AE%BE%E8%AE%A1&amp;spm=1001.2101.3001.7020&quot;,&quot;extra&quot;:&quot;{\&quot;searchword\&quot;:\&quot;用户界面设计\&quot;}&quot;}" data-tit="用户界面设计" data-pretit="用户界面设计">用户界面设计</a>为多个功能页面，每个页面进行单独的文件管理，并通过页面路由API完成页面间的调度管理如跳转、回退等操作，以实现应用内的功能解耦。</p> </li><li> <p><strong>组件：</strong><br> UI构建与显示的最小单位，如列表、网格、按钮、单选框、进度条、文本等。开发者通过多种<span class="edu-hl hl hl-1" data-report-view="{&quot;spm&quot;:&quot;1001.2101.3001.7020&quot;,&quot;extra&quot;:&quot;{\&quot;word\&quot;:\&quot;组件\&quot;}&quot;}" data-report-click="{&quot;spm&quot;:&quot;1001.2101.3001.7020&quot;,&quot;extra&quot;:&quot;{\&quot;word\&quot;:\&quot;组件\&quot;}&quot;}" data-tit="组件" data-pretit="组件">组件</span>的组合，构建出满足自身应用诉求的完整界面。</p> </li></ul> 
<h3><a name="t3"></a><a id="2_ArkUI_12"></a>2. ArkUI</h3> 
<p>  ArkUI是提供<span class="words-blog hl-git-1" data-report-view="{&quot;spm&quot;:&quot;1001.2101.3001.10283&quot;,&quot;extra&quot;:&quot;{\&quot;words\&quot;:\&quot;HarmonyOS应用\&quot;}&quot;}" data-tit="HarmonyOS应用" data-pretit="harmonyos应用">HarmonyOS应用</span>开发的<strong>UI框架</strong>，具有<strong>极简开发、精致体验、跨设备/跨平台</strong>的特点。<br>   ArkUI（方舟UI框架）为应用的UI开发提供了<strong>完整</strong>的<strong>基础设施</strong>，包括<strong>简洁的UI语法</strong>、<strong>丰富的UI功能</strong>（组件、布局、动画以及交互事件），以及实时界面预览工具等，可以支持开发者进行可视化界面开发。<br> <img src="https://i-blog.csdnimg.cn/direct/913d9ffa63954b56a561044d8ef1806b.png" alt="在这里插入图片描述"></p> 
<h3><a name="t4"></a><a id="3__16"></a>3. 具备的能力</h3> 
<ul><li><strong>ArkTS</strong><br> ArkTS是优选的主力应用开发语言，围绕应用开发在TypeScript（简称TS）生态基础上做了进一步扩展。扩展能力包含声明式UI描述、自定义组件、动态扩展UI元素、状态管理和渲染控制。状态管理作为基于ArkTS的声明式开发范式的特色，通过功能不同的装饰器给开发者提供了清晰的页面更新渲染流程和管道。状态管理包括UI组件状态和应用程序状态，两者协作可以使开发者完整地构建整个应用的数据更新和UI渲染。A</li><li><strong>布局</strong><br> 布局是UI的必要元素，它定义了组件在界面中的位置。ArkUI框架提供了多种布局方式，除了基础的线性布局、层叠布局、弹性布局、相对布局、栅格布局外，也提供了相对复杂的列表、宫格、轮播。</li><li><strong>组件</strong><br> 组件是UI的必要元素，形成了在界面中的样子，由框架直接提供的称为系统组件，由开发者定义的称为自定义组件。系统内置组件包括按钮、单选框、进度条、文本等。开发者可以通过链式调用的方式设置系统内置组件的渲染效果。开发者可以将系统内置组件组合为自定义组件，通过这种方式将页面组件化为一个个独立的UI单元，实现页面不同单元的独立创建、开发和复用，具有更强的工程性。</li><li><strong>页面路由和组件导航</strong><br> 应用可能包含多个页面，可通过页面路由实现页面间的跳转。一个页面内可能存在组件间的导航如典型的分栏，可通过导航组件实现组件间的导航。</li><li><strong>图形</strong><br> 方舟开发框架提供了多种类型图片的显示能力和多种自定义绘制的能力，以满足开发者的自定义绘图需求，支持绘制形状、填充颜色、绘制文本、变形与裁剪、嵌入图片等。</li><li><strong>动画</strong><br> 动画是UI的重要元素之一。优秀的动画设计能够极大地提升用户体验，框架提供了丰富的动画能力，除了组件内置动画效果外，还包括属性动画、显式动画、自定义转场动画以及动画API等，开发者可以通过封装的物理模型或者调用动画能力API来实现自定义动画轨迹。</li><li><strong>交互事件</strong><br> 交互事件是UI和用户交互的必要元素。方舟开发框架提供了多种交互事件，除了触摸事件、鼠标事件、键盘按键事件、焦点事件等通用事件外，还包括基于通用事件进行进一步识别的手势事件。手势事件有单一手势如点击手势、长按手势、拖动手势、捏合手势、旋转手势、滑动手势，以及通过单一手势事件进行组合的组合手势事件。</li><li><strong>自定义能力</strong><br> 自定义能力是UI开发框架提供给开发者对UI界面进行开发和定制化的能力。包括：自定组合、自定义扩展、自定义节点和自定义渲染。</li></ul> 
<h2><a name="t5"></a><a id="_33"></a>三、开发范式</h2> 
<p>  也称为<strong>软件开发范式</strong>，‌主要关注的是<strong>软件生命周期</strong>的各个阶段及其划分。‌它确保了<span class="edu-hl hl hl-1" data-report-view="{&quot;spm&quot;:&quot;1001.2101.3001.7020&quot;,&quot;extra&quot;:&quot;{\&quot;word\&quot;:\&quot;软件\&quot;}&quot;}" data-report-click="{&quot;spm&quot;:&quot;1001.2101.3001.7020&quot;,&quot;extra&quot;:&quot;{\&quot;word\&quot;:\&quot;软件\&quot;}&quot;}" data-tit="软件" data-pretit="软件">软件</span>设计各阶段的关系被清晰地描述，‌从而帮助定义出各种<strong>软件开发模型</strong>。‌这些<span class="words-blog hl-git-1" data-report-view="{&quot;spm&quot;:&quot;1001.2101.3001.10283&quot;,&quot;extra&quot;:&quot;{\&quot;words\&quot;:\&quot;模型\&quot;}&quot;}" data-tit="模型" data-pretit="模型">模型</span>有助于组织和管理<span class="edu-hl hl hl-1" data-report-view="{&quot;spm&quot;:&quot;1001.2101.3001.7020&quot;,&quot;extra&quot;:&quot;{\&quot;word\&quot;:\&quot;软件开发\&quot;}&quot;}" data-report-click="{&quot;spm&quot;:&quot;1001.2101.3001.7020&quot;,&quot;extra&quot;:&quot;{\&quot;word\&quot;:\&quot;软件开发\&quot;}&quot;}" data-tit="软件开发" data-pretit="软件开发">软件开发</span>过程，‌确保项目的顺利进行和高质量的软件产品的交付。‌开发范式的选择对于项目的成功至关重要，‌因为它直接影响到软件开发的效率、‌质量和成本。‌</p> 
<p>  针对不同的应用场景及技术背景，方舟UI框架提供了<strong>两种开发范式</strong>，分别是基于ArkTS的<strong>声明式开发范式</strong>（简称“<strong>声明式开发范式</strong>”）和<strong>兼容JS的类Web开发范式</strong>（简称“<strong>类Web开发范式</strong>”）。</p> 
<ul><li> <p><strong>声明式开发范式：</strong><br> 采用基于TypeScript声明式UI语法扩展而来的ArkTS语言，从组件、动画和状态管理三个维度提供UI绘制能力。</p> </li><li> <p><strong>类Web开发范式：</strong><br> 采用经典的HML、CSS、<span class="words-blog hl-git-1" data-report-view="{&quot;spm&quot;:&quot;1001.2101.3001.10283&quot;,&quot;extra&quot;:&quot;{\&quot;words\&quot;:\&quot;JavaScript\&quot;}&quot;}" data-tit="JavaScript" data-pretit="javascript">JavaScript</span>三段式开发方式，即使用HML标签文件搭建布局、使用CSS文件描述样式、使用JavaScript文件处理逻辑。该范式更符合于Web前端开发者的使用习惯，便于快速将已有的Web应用改造成方舟UI框架应用。</p> </li></ul> 
<p>在开发一款新应用时，推荐采用声明式开发范式来构建UI，主要基于以下几点考虑：</p> 
<ul><li> <p><strong>开发效率：</strong><br> 声明式开发范式更接近自然语义的编程方式，开发者可以直观地描述UI，无需关心如何实现UI绘制和渲染，开发高效简洁。</p> </li><li> <p><strong>应用性能：</strong><br> 如下图所示，两种开发范式的UI后端引擎和语言运行时是共用的，但是相比类Web开发范式，声明式开发范式无需JS框架进行页面DOM管理，渲染更新链路更为精简，占用内存更少，应用性能更佳。</p> </li></ul> 
<p>发展趋势：声明式开发范式后续会作为主推的开发范式持续演进，为开发者提供更丰富、更强大的能力。<br> <img src="https://i-blog.csdnimg.cn/direct/28d35f2b183a451fae58aa76bee1646a.png" alt="在这里插入图片描述"></p> 
<h2><a name="t6"></a><a id="_54"></a>四、应用类型与开发范式</h2> 
<p>根据所选用应用模型（Stage模型、FA模型）和页面形态（应用或服务的普通页面、卡片）的不同，对应支持的UI开发范式也有所差异，详见下表。<br> <img src="https://i-blog.csdnimg.cn/direct/231eba63bcf44b169231ab3e9300f2e4.png" alt="在这里插入图片描述"><br> <code style="user-select: auto;">希望大家多多关注+点赞+收藏 🙏🙏，你们的鼓励是我不断前进的动力💪💪！！！</code></p>
                